import sys

sys.path.append("..")
from common.function.common_func import typeof
from common.function.common_func import isset

def sort_dict_two_dimensional(dict_data, sort_type):
    """ 二维字典的排序
        :param dict_data:
        :param sort_type:
        :return:
    """
    new_dict_key = []
    old_dict_key = []
    for key, dict_data_val in dict_data.items():
        if isset(dict_data_val, sort_type):
            # 将需要做排序的二维的键取出作为键 加上本身的键(做为之后拉取键值用) 其中用到补全的方法 因为一旦出现int类型
            if typeof(dict_data_val[sort_type]) == 'str':
                new_dict_key.append(str(dict_data_val[sort_type]) + '_' + str(key))
            else:
                new_dict_key.append(str(dict_data_val[sort_type]).rjust(20, '0') + '_' + str(key))
        else:
            return dict_data
        old_dict_key.append(key)

    if not new_dict_key:
        return dict_data
    # print(new_dict_key)
    # 重新进行排序 键值排序
    new_dict_key.sort(reverse=True)
    # print(new_dict_key)
    res_dict_data = {}
    for new_dict_data_keys_val in new_dict_key:
        # 取出排序最新的键值拆分
        split_key_arr = new_dict_data_keys_val.split('_')
        # 将键值取出之后然后直接进行新数组塞入
        split_key_arr_last = split_key_arr[-1]
        if split_key_arr_last not in old_dict_key:
            split_key_arr_last = int(split_key_arr_last)
        res_dict_data[split_key_arr_last] = dict_data[split_key_arr_last]
    return res_dict_data
